import numpy as np

a2d = np.asarray([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(a2d)
print(a2d.ndim) # 二维数组
print(a2d.shape)
print(a2d.shape[1:2])
print()

a3d = np.array([
    [[1, 2, 3], [4, 5, 6]],
    [[7, 8, 9], [10, 11, 12]],
    [[13, 14, 15], [16, 17, 18]]
])
print(a3d.ndim) # 三维数组
print()

a = np.ones(shape=(2,3), dtype=np.int32)
print(a, a.dtype)
b = np.zeros(shape=(2,3), dtype=np.float64)
print(b, b.dtype)
c = np.arange(1, 10, 2, float)
print(c, c.dtype) # dtype('float64')
print()

# 数组的数据类型当然也可以改变，我们可以使用 astype() 改变数组的数据类型，不过改变数据类型会创建一个新的数组，而不是改变原数组的数据类型
d = b.astype(np.int32)
print(d, d.dtype) # dtype('float64')
print()

# 不能通过直接修改数据类型来修改数组的数据类型
# 1个float64相当于2个int32,所以原有的4个float32,会变为8个int32,然后直接输出这8个int32

# linear space
# start：必须参数，序列的起始值。
# stop：必须参数，序列的终点。
# num：序列中元素的个数，默认是 50。
# endpoint：默认为 True，如果为 True，则数组最后一个元素是 stop。
# retstep：默认为 False，如果为 True，则返回数组与公差。
# 具体就是创建一个从开始数值到结束数值的等差数列
a, b = np.linspace(start=1, stop=10, num=5, endpoint=True, retstep=True, dtype=np.float64)
print(a, b)







